<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<meta http-equiv="cache-control" content="no-cache">
<title>Genivia - SSL/TLS context and functions</title>
<link href="genivia_tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="genivia_content.css" rel="stylesheet" type="text/css">
</head>
<body>
<div id="top">
 <div id="titlearea">
  <table height="72px" width="100%" cellspacing="0" cellpadding="0">
   <tbody>
    <tr>
     <td width="10%">&nbsp;</td>
     <td width="175px"><a href="https://www.genivia.com"><img alt="Genivia" src="GeniviaLogo2_trans_noslogan.png"/></a></td>
     <td class="tab_home"><a href="https://www.genivia.com">Home</a></td>
     <td class="tab_home"><a href="https://www.genivia.com/docs.html">Documentation</a></td>
     <td>
      <div style="float: right; font-size: 18px; font-weight: bold;">SSL/TLS context and functions</div>
      <br>
      <div style="float: right; font-size: 10px;">updated Tue Apr 20 2021 by Robert van Engelen</div>
     </td>
     <td width="10%">&nbsp;</td>
    </tr>
   </tbody>
  </table>
 </div>
<!-- Generated by Doxygen 1.8.11 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li class="current"><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('group__group__ssl.html','');});
</script>
<div id="doc-content">
<div class="header">
  <div class="summary">
<a href="#define-members">Macros</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">SSL/TLS context and functions</div>  </div>
</div><!--header-->
<div class="contents">

<p>This module defines functions to set the SSL/TLS context for HTTPS and WS-Security.  
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:ga63d10bdcb2b678d9d55cab31e1bdaf3e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__ssl.html#ga63d10bdcb2b678d9d55cab31e1bdaf3e">SOAP_SSL_DEFAULT</a>&#160;&#160;&#160;(<a class="el" href="group__group__ssl.html#ga8c9f87b34ff34020349d4fe7300c47bc">SOAP_SSL_REQUIRE_SERVER_AUTHENTICATION</a> | <a class="el" href="group__group__ssl.html#gabdef447c5c16a0d5a35388cb64835f9b">SOAP_TLSv1</a>)</td></tr>
<tr class="memdesc:ga63d10bdcb2b678d9d55cab31e1bdaf3e"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag with <code><a class="el" href="group__group__ssl.html#ga8c9f87b34ff34020349d4fe7300c47bc" title="soap_ssl_flags flag for clients to require servers to authenticate to clients during the HTTPS handsh...">SOAP_SSL_REQUIRE_SERVER_AUTHENTICATION</a></code> and <code><a class="el" href="group__group__ssl.html#gabdef447c5c16a0d5a35388cb64835f9b" title="soap_ssl_flags flag value to enable TLS v1 (TLS 1.0 and higher) and to disable SSL v3 ...">SOAP_TLSv1</a></code> enabled by default  <a href="#ga63d10bdcb2b678d9d55cab31e1bdaf3e">More...</a><br /></td></tr>
<tr class="separator:ga63d10bdcb2b678d9d55cab31e1bdaf3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa78c27c03ccd2fb47afda6b83a3fd01c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__ssl.html#gaa78c27c03ccd2fb47afda6b83a3fd01c">SOAP_SSL_ALLOW_EXPIRED_CERTIFICATE</a></td></tr>
<tr class="memdesc:gaa78c27c03ccd2fb47afda6b83a3fd01c"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag value to allow self-signed and expired certificates and those without CRL to be used for authentication  <a href="#gaa78c27c03ccd2fb47afda6b83a3fd01c">More...</a><br /></td></tr>
<tr class="separator:gaa78c27c03ccd2fb47afda6b83a3fd01c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga52614007d0c0359ceaf86588f47661b9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__ssl.html#ga52614007d0c0359ceaf86588f47661b9">SOAP_SSL_NO_AUTHENTICATION</a></td></tr>
<tr class="memdesc:ga52614007d0c0359ceaf86588f47661b9"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag value to disable authentication of the peer  <a href="#ga52614007d0c0359ceaf86588f47661b9">More...</a><br /></td></tr>
<tr class="separator:ga52614007d0c0359ceaf86588f47661b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1bd8c93325f8150c6a2f9c1844e92558"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__ssl.html#ga1bd8c93325f8150c6a2f9c1844e92558">SOAP_SSL_NO_DEFAULT_CA_PATH</a></td></tr>
<tr class="memdesc:ga1bd8c93325f8150c6a2f9c1844e92558"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag value to prevent OpenSSL from calling <code>SSL_CTX_set_default_verify_paths</code>  <a href="#ga1bd8c93325f8150c6a2f9c1844e92558">More...</a><br /></td></tr>
<tr class="separator:ga1bd8c93325f8150c6a2f9c1844e92558"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4ab5e7f3fbb00fa2669e29e9ca000d12"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__ssl.html#ga4ab5e7f3fbb00fa2669e29e9ca000d12">SOAP_SSL_REQUIRE_CLIENT_AUTHENTICATION</a></td></tr>
<tr class="memdesc:ga4ab5e7f3fbb00fa2669e29e9ca000d12"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag for servers to require clients to authenticate to servers during the HTTPS handshake  <a href="#ga4ab5e7f3fbb00fa2669e29e9ca000d12">More...</a><br /></td></tr>
<tr class="separator:ga4ab5e7f3fbb00fa2669e29e9ca000d12"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8c9f87b34ff34020349d4fe7300c47bc"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__ssl.html#ga8c9f87b34ff34020349d4fe7300c47bc">SOAP_SSL_REQUIRE_SERVER_AUTHENTICATION</a></td></tr>
<tr class="memdesc:ga8c9f87b34ff34020349d4fe7300c47bc"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag for clients to require servers to authenticate to clients during the HTTPS handshake  <a href="#ga8c9f87b34ff34020349d4fe7300c47bc">More...</a><br /></td></tr>
<tr class="separator:ga8c9f87b34ff34020349d4fe7300c47bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab7153fa5dcada365bce84add0cb60a8e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__ssl.html#gab7153fa5dcada365bce84add0cb60a8e">SOAP_SSL_RSA</a></td></tr>
<tr class="memdesc:gab7153fa5dcada365bce84add0cb60a8e"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag value to use RSA instead of DH (automatically set when no DH parameter is specified)  <a href="#gab7153fa5dcada365bce84add0cb60a8e">More...</a><br /></td></tr>
<tr class="separator:gab7153fa5dcada365bce84add0cb60a8e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2d7d44f0b65da9941f0272b0f73745f5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__ssl.html#ga2d7d44f0b65da9941f0272b0f73745f5">SOAP_SSL_SKIP_HOST_CHECK</a></td></tr>
<tr class="memdesc:ga2d7d44f0b65da9941f0272b0f73745f5"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag for clients to allow clients to skip common name checks against the host name of the server  <a href="#ga2d7d44f0b65da9941f0272b0f73745f5">More...</a><br /></td></tr>
<tr class="separator:ga2d7d44f0b65da9941f0272b0f73745f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0d4dc7f02c689dd69a5508848b7b701d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__ssl.html#ga0d4dc7f02c689dd69a5508848b7b701d">SOAP_SSLv3</a></td></tr>
<tr class="memdesc:ga0d4dc7f02c689dd69a5508848b7b701d"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag value to enable SSL v3 but disable TLS, should be used for legacy purposes only  <a href="#ga0d4dc7f02c689dd69a5508848b7b701d">More...</a><br /></td></tr>
<tr class="separator:ga0d4dc7f02c689dd69a5508848b7b701d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf273a14b5105e943a0280947d7def8ff"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__ssl.html#gaf273a14b5105e943a0280947d7def8ff">SOAP_SSLv3_TLSv1</a></td></tr>
<tr class="memdesc:gaf273a14b5105e943a0280947d7def8ff"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag value to enable both SSL v3 and TLS 1 (TLS 1.0 to max)  <a href="#gaf273a14b5105e943a0280947d7def8ff">More...</a><br /></td></tr>
<tr class="separator:gaf273a14b5105e943a0280947d7def8ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabdef447c5c16a0d5a35388cb64835f9b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__ssl.html#gabdef447c5c16a0d5a35388cb64835f9b">SOAP_TLSv1</a></td></tr>
<tr class="memdesc:gabdef447c5c16a0d5a35388cb64835f9b"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag value to enable TLS v1 (TLS 1.0 and higher) and to disable SSL v3  <a href="#gabdef447c5c16a0d5a35388cb64835f9b">More...</a><br /></td></tr>
<tr class="separator:gabdef447c5c16a0d5a35388cb64835f9b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac3d8ef23939e8678b69552994f949461"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__ssl.html#gac3d8ef23939e8678b69552994f949461">SOAP_TLSv1_0</a></td></tr>
<tr class="memdesc:gac3d8ef23939e8678b69552994f949461"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag value to enable TLS 1.0  <a href="#gac3d8ef23939e8678b69552994f949461">More...</a><br /></td></tr>
<tr class="separator:gac3d8ef23939e8678b69552994f949461"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab841bb29efb683c12614424fa7f3c623"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__ssl.html#gab841bb29efb683c12614424fa7f3c623">SOAP_TLSv1_1</a></td></tr>
<tr class="memdesc:gab841bb29efb683c12614424fa7f3c623"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag value to enable TLS 1.1  <a href="#gab841bb29efb683c12614424fa7f3c623">More...</a><br /></td></tr>
<tr class="separator:gab841bb29efb683c12614424fa7f3c623"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaaec41400f54924b9f7eb260f206a18dd"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__ssl.html#gaaec41400f54924b9f7eb260f206a18dd">SOAP_TLSv1_2</a></td></tr>
<tr class="memdesc:gaaec41400f54924b9f7eb260f206a18dd"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag value to enable TLS 1.2  <a href="#gaaec41400f54924b9f7eb260f206a18dd">More...</a><br /></td></tr>
<tr class="separator:gaaec41400f54924b9f7eb260f206a18dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaecb885d03bfd4ba6636028326390192a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__ssl.html#gaecb885d03bfd4ba6636028326390192a">SOAP_TLSv1_3</a></td></tr>
<tr class="memdesc:gaecb885d03bfd4ba6636028326390192a"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag value to enable TLS 1.3  <a href="#gaecb885d03bfd4ba6636028326390192a">More...</a><br /></td></tr>
<tr class="separator:gaecb885d03bfd4ba6636028326390192a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:ga0cd7f0c3eda00033f2a3b6da331f39ed"><td class="memItemLeft" align="right" valign="top">typedef unsigned short&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed">soap_ssl_flags</a></td></tr>
<tr class="memdesc:ga0cd7f0c3eda00033f2a3b6da331f39ed"><td class="mdescLeft">&#160;</td><td class="mdescRight">SSL/TLS (HTTPS) client and server context flags for <code><a class="el" href="group__group__ssl.html#ga269c7732b1cda9dc79db08fcbf1d5438" title="Initialize the client-side SSL/TLS context. ">soap_ssl_client_context</a></code> and <code><a class="el" href="group__group__ssl.html#ga3492465cdd8aa71fe746199d3842cac7" title="Initialize the server-side SSL/TLS context. ">soap_ssl_server_context</a></code>, respectively, flags can be combined with <code>|</code> (bit-wise or)  <a href="#ga0cd7f0c3eda00033f2a3b6da331f39ed">More...</a><br /></td></tr>
<tr class="separator:ga0cd7f0c3eda00033f2a3b6da331f39ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga570b262ac9d55fc509f1f5999deaa18f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__ssl.html#ga570b262ac9d55fc509f1f5999deaa18f">soap_ssl_init</a> (void)</td></tr>
<tr class="memdesc:ga570b262ac9d55fc509f1f5999deaa18f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize the SSL/TLS library.  <a href="#ga570b262ac9d55fc509f1f5999deaa18f">More...</a><br /></td></tr>
<tr class="separator:ga570b262ac9d55fc509f1f5999deaa18f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0391e39e900926438969dc2461634574"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__ssl.html#ga0391e39e900926438969dc2461634574">soap_ssl_noinit</a> (void)</td></tr>
<tr class="memdesc:ga0391e39e900926438969dc2461634574"><td class="mdescLeft">&#160;</td><td class="mdescRight">Do not initalized the SSL/TLS library.  <a href="#ga0391e39e900926438969dc2461634574">More...</a><br /></td></tr>
<tr class="separator:ga0391e39e900926438969dc2461634574"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3492465cdd8aa71fe746199d3842cac7"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__ssl.html#ga3492465cdd8aa71fe746199d3842cac7">soap_ssl_server_context</a> (struct <a class="el" href="structsoap.html">soap</a> *<a class="el" href="structsoap.html">soap</a>, <a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed">soap_ssl_flags</a> flags, const char *keyfile, const char *password, const char *cafile, const char *capath, const char *dhfile, const char *randfile, const char *sid)</td></tr>
<tr class="memdesc:ga3492465cdd8aa71fe746199d3842cac7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize the server-side SSL/TLS context.  <a href="#ga3492465cdd8aa71fe746199d3842cac7">More...</a><br /></td></tr>
<tr class="separator:ga3492465cdd8aa71fe746199d3842cac7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga269c7732b1cda9dc79db08fcbf1d5438"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__ssl.html#ga269c7732b1cda9dc79db08fcbf1d5438">soap_ssl_client_context</a> (struct <a class="el" href="structsoap.html">soap</a> *<a class="el" href="structsoap.html">soap</a>, <a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed">soap_ssl_flags</a> flags, const char *keyfile, const char *password, const char *cafile, const char *capath, const char *randfile)</td></tr>
<tr class="memdesc:ga269c7732b1cda9dc79db08fcbf1d5438"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize the client-side SSL/TLS context.  <a href="#ga269c7732b1cda9dc79db08fcbf1d5438">More...</a><br /></td></tr>
<tr class="separator:ga269c7732b1cda9dc79db08fcbf1d5438"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae4052d1c701d1756c3e1b86c740881d5"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__ssl.html#gae4052d1c701d1756c3e1b86c740881d5">soap_ssl_crl</a> (struct <a class="el" href="structsoap.html">soap</a> *<a class="el" href="structsoap.html">soap</a>, const char *crlfile)</td></tr>
<tr class="memdesc:gae4052d1c701d1756c3e1b86c740881d5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enable SSL/TLS CRLs.  <a href="#gae4052d1c701d1756c3e1b86c740881d5">More...</a><br /></td></tr>
<tr class="separator:gae4052d1c701d1756c3e1b86c740881d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga990083effa5d8ed931fd75dc2630a2cc"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__ssl.html#ga990083effa5d8ed931fd75dc2630a2cc">soap_ssl_accept</a> (struct <a class="el" href="structsoap.html">soap</a> *<a class="el" href="structsoap.html">soap</a>)</td></tr>
<tr class="memdesc:ga990083effa5d8ed931fd75dc2630a2cc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Accept SSL/TLS connection.  <a href="#ga990083effa5d8ed931fd75dc2630a2cc">More...</a><br /></td></tr>
<tr class="separator:ga990083effa5d8ed931fd75dc2630a2cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaedc51dd2ab95cdff45057639fac70a8f"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__ssl.html#gaedc51dd2ab95cdff45057639fac70a8f">CRYPTO_thread_setup</a> ()</td></tr>
<tr class="memdesc:gaedc51dd2ab95cdff45057639fac70a8f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Setup function for OpenSSL versions prior to 1.1.1 to set locks for multi-threaded SSL/TLS applications.  <a href="#gaedc51dd2ab95cdff45057639fac70a8f">More...</a><br /></td></tr>
<tr class="separator:gaedc51dd2ab95cdff45057639fac70a8f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8b29e4ea1419a4af49823862765f2918"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__ssl.html#ga8b29e4ea1419a4af49823862765f2918">CRYPTO_thread_cleanup</a> ()</td></tr>
<tr class="memdesc:ga8b29e4ea1419a4af49823862765f2918"><td class="mdescLeft">&#160;</td><td class="mdescRight">Cleanup function for OpenSSL versions prior to 1.1.1.  <a href="#ga8b29e4ea1419a4af49823862765f2918">More...</a><br /></td></tr>
<tr class="separator:ga8b29e4ea1419a4af49823862765f2918"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<p>This module defines functions to set the SSL/TLS context for HTTPS and WS-Security. </p>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="gaa78c27c03ccd2fb47afda6b83a3fd01c"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SOAP_SSL_ALLOW_EXPIRED_CERTIFICATE</td>
        </tr>
      </table>
</div><div class="memdoc">

<p><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag value to allow self-signed and expired certificates and those without CRL to be used for authentication </p>
<dl class="section see"><dt>See also</dt><dd><code><a class="el" href="group__group__ssl.html#ga3492465cdd8aa71fe746199d3842cac7" title="Initialize the server-side SSL/TLS context. ">soap_ssl_server_context</a></code>, <code><a class="el" href="group__group__ssl.html#ga269c7732b1cda9dc79db08fcbf1d5438" title="Initialize the client-side SSL/TLS context. ">soap_ssl_client_context</a></code>. </dd></dl>

</div>
</div>
<a class="anchor" id="ga63d10bdcb2b678d9d55cab31e1bdaf3e"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SOAP_SSL_DEFAULT&#160;&#160;&#160;(<a class="el" href="group__group__ssl.html#ga8c9f87b34ff34020349d4fe7300c47bc">SOAP_SSL_REQUIRE_SERVER_AUTHENTICATION</a> | <a class="el" href="group__group__ssl.html#gabdef447c5c16a0d5a35388cb64835f9b">SOAP_TLSv1</a>)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag with <code><a class="el" href="group__group__ssl.html#ga8c9f87b34ff34020349d4fe7300c47bc" title="soap_ssl_flags flag for clients to require servers to authenticate to clients during the HTTPS handsh...">SOAP_SSL_REQUIRE_SERVER_AUTHENTICATION</a></code> and <code><a class="el" href="group__group__ssl.html#gabdef447c5c16a0d5a35388cb64835f9b" title="soap_ssl_flags flag value to enable TLS v1 (TLS 1.0 and higher) and to disable SSL v3 ...">SOAP_TLSv1</a></code> enabled by default </p>
<dl class="section see"><dt>See also</dt><dd><code><a class="el" href="group__group__ssl.html#ga3492465cdd8aa71fe746199d3842cac7" title="Initialize the server-side SSL/TLS context. ">soap_ssl_server_context</a></code>, <code><a class="el" href="group__group__ssl.html#ga269c7732b1cda9dc79db08fcbf1d5438" title="Initialize the client-side SSL/TLS context. ">soap_ssl_client_context</a></code>. </dd></dl>

</div>
</div>
<a class="anchor" id="ga52614007d0c0359ceaf86588f47661b9"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SOAP_SSL_NO_AUTHENTICATION</td>
        </tr>
      </table>
</div><div class="memdoc">

<p><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag value to disable authentication of the peer </p>
<p>This flag should be used sparingly such as for testing only.</p>
<dl class="section see"><dt>See also</dt><dd><code><a class="el" href="group__group__ssl.html#ga3492465cdd8aa71fe746199d3842cac7" title="Initialize the server-side SSL/TLS context. ">soap_ssl_server_context</a></code>, <code><a class="el" href="group__group__ssl.html#ga269c7732b1cda9dc79db08fcbf1d5438" title="Initialize the client-side SSL/TLS context. ">soap_ssl_client_context</a></code>. </dd></dl>

</div>
</div>
<a class="anchor" id="ga1bd8c93325f8150c6a2f9c1844e92558"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SOAP_SSL_NO_DEFAULT_CA_PATH</td>
        </tr>
      </table>
</div><div class="memdoc">

<p><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag value to prevent OpenSSL from calling <code>SSL_CTX_set_default_verify_paths</code> </p>
<dl class="section see"><dt>See also</dt><dd><code><a class="el" href="group__group__ssl.html#ga3492465cdd8aa71fe746199d3842cac7" title="Initialize the server-side SSL/TLS context. ">soap_ssl_server_context</a></code>, <code><a class="el" href="group__group__ssl.html#ga269c7732b1cda9dc79db08fcbf1d5438" title="Initialize the client-side SSL/TLS context. ">soap_ssl_client_context</a></code>. </dd></dl>

</div>
</div>
<a class="anchor" id="ga4ab5e7f3fbb00fa2669e29e9ca000d12"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SOAP_SSL_REQUIRE_CLIENT_AUTHENTICATION</td>
        </tr>
      </table>
</div><div class="memdoc">

<p><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag for servers to require clients to authenticate to servers during the HTTPS handshake </p>
<p>This flag requires clients connected to the server to authenticate to the server. The <code><a class="el" href="group__group__ssl.html#ga3492465cdd8aa71fe746199d3842cac7" title="Initialize the server-side SSL/TLS context. ">soap_ssl_server_context</a></code> must specify <code>cafile</code> and/or <code>capath</code> parameters with certificates (CA root and/or server certificates) to authenticate clients.</p>
<dl class="section see"><dt>See also</dt><dd><code><a class="el" href="group__group__ssl.html#ga3492465cdd8aa71fe746199d3842cac7" title="Initialize the server-side SSL/TLS context. ">soap_ssl_server_context</a></code>. </dd></dl>

</div>
</div>
<a class="anchor" id="ga8c9f87b34ff34020349d4fe7300c47bc"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SOAP_SSL_REQUIRE_SERVER_AUTHENTICATION</td>
        </tr>
      </table>
</div><div class="memdoc">

<p><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag for clients to require servers to authenticate to clients during the HTTPS handshake </p>
<p>This flag requires connected servers to authenticate to the client. The <code><a class="el" href="group__group__ssl.html#ga269c7732b1cda9dc79db08fcbf1d5438" title="Initialize the client-side SSL/TLS context. ">soap_ssl_client_context</a></code> must specify <code>cafile</code> and/or <code>capath</code> parameters with certificates (CA root and/or server certificates) to authenticate the server.</p>
<dl class="section see"><dt>See also</dt><dd><code><a class="el" href="group__group__ssl.html#ga269c7732b1cda9dc79db08fcbf1d5438" title="Initialize the client-side SSL/TLS context. ">soap_ssl_client_context</a></code>. </dd></dl>

</div>
</div>
<a class="anchor" id="gab7153fa5dcada365bce84add0cb60a8e"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SOAP_SSL_RSA</td>
        </tr>
      </table>
</div><div class="memdoc">

<p><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag value to use RSA instead of DH (automatically set when no DH parameter is specified) </p>

</div>
</div>
<a class="anchor" id="ga2d7d44f0b65da9941f0272b0f73745f5"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SOAP_SSL_SKIP_HOST_CHECK</td>
        </tr>
      </table>
</div><div class="memdoc">

<p><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag for clients to allow clients to skip common name checks against the host name of the server </p>

</div>
</div>
<a class="anchor" id="ga0d4dc7f02c689dd69a5508848b7b701d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SOAP_SSLv3</td>
        </tr>
      </table>
</div><div class="memdoc">

<p><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag value to enable SSL v3 but disable TLS, should be used for legacy purposes only </p>
<p>This flag can be used in combination with other SSL and TLS protocol flags, using <code>|</code> (bit-wise or).</p>
<dl class="section see"><dt>See also</dt><dd><code><a class="el" href="group__group__ssl.html#ga0d4dc7f02c689dd69a5508848b7b701d" title="soap_ssl_flags flag value to enable SSL v3 but disable TLS, should be used for legacy purposes only ...">SOAP_SSLv3</a></code>, <code><a class="el" href="group__group__ssl.html#gaf273a14b5105e943a0280947d7def8ff" title="soap_ssl_flags flag value to enable both SSL v3 and TLS 1 (TLS 1.0 to max) ">SOAP_SSLv3_TLSv1</a></code>, <code><a class="el" href="group__group__ssl.html#gabdef447c5c16a0d5a35388cb64835f9b" title="soap_ssl_flags flag value to enable TLS v1 (TLS 1.0 and higher) and to disable SSL v3 ...">SOAP_TLSv1</a></code>, <code><a class="el" href="group__group__ssl.html#gac3d8ef23939e8678b69552994f949461" title="soap_ssl_flags flag value to enable TLS 1.0 ">SOAP_TLSv1_0</a></code>, <code><a class="el" href="group__group__ssl.html#gab841bb29efb683c12614424fa7f3c623" title="soap_ssl_flags flag value to enable TLS 1.1 ">SOAP_TLSv1_1</a></code>, <code><a class="el" href="group__group__ssl.html#gaaec41400f54924b9f7eb260f206a18dd" title="soap_ssl_flags flag value to enable TLS 1.2 ">SOAP_TLSv1_2</a></code>, <code><a class="el" href="group__group__ssl.html#gaecb885d03bfd4ba6636028326390192a" title="soap_ssl_flags flag value to enable TLS 1.3 ">SOAP_TLSv1_3</a></code>. </dd></dl>

</div>
</div>
<a class="anchor" id="gaf273a14b5105e943a0280947d7def8ff"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SOAP_SSLv3_TLSv1</td>
        </tr>
      </table>
</div><div class="memdoc">

<p><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag value to enable both SSL v3 and TLS 1 (TLS 1.0 to max) </p>
<p>This flag can be used in combination with other SSL and TLS protocol flags, using <code>|</code> (bit-wise or).</p>
<dl class="section see"><dt>See also</dt><dd><code><a class="el" href="group__group__ssl.html#ga0d4dc7f02c689dd69a5508848b7b701d" title="soap_ssl_flags flag value to enable SSL v3 but disable TLS, should be used for legacy purposes only ...">SOAP_SSLv3</a></code>, <code><a class="el" href="group__group__ssl.html#gaf273a14b5105e943a0280947d7def8ff" title="soap_ssl_flags flag value to enable both SSL v3 and TLS 1 (TLS 1.0 to max) ">SOAP_SSLv3_TLSv1</a></code>, <code><a class="el" href="group__group__ssl.html#gabdef447c5c16a0d5a35388cb64835f9b" title="soap_ssl_flags flag value to enable TLS v1 (TLS 1.0 and higher) and to disable SSL v3 ...">SOAP_TLSv1</a></code>, <code><a class="el" href="group__group__ssl.html#gac3d8ef23939e8678b69552994f949461" title="soap_ssl_flags flag value to enable TLS 1.0 ">SOAP_TLSv1_0</a></code>, <code><a class="el" href="group__group__ssl.html#gab841bb29efb683c12614424fa7f3c623" title="soap_ssl_flags flag value to enable TLS 1.1 ">SOAP_TLSv1_1</a></code>, <code><a class="el" href="group__group__ssl.html#gaaec41400f54924b9f7eb260f206a18dd" title="soap_ssl_flags flag value to enable TLS 1.2 ">SOAP_TLSv1_2</a></code>, <code><a class="el" href="group__group__ssl.html#gaecb885d03bfd4ba6636028326390192a" title="soap_ssl_flags flag value to enable TLS 1.3 ">SOAP_TLSv1_3</a></code>. </dd></dl>

</div>
</div>
<a class="anchor" id="gabdef447c5c16a0d5a35388cb64835f9b"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SOAP_TLSv1</td>
        </tr>
      </table>
</div><div class="memdoc">

<p><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag value to enable TLS v1 (TLS 1.0 and higher) and to disable SSL v3 </p>
<p>This flag can be used in combination with other SSL and TLS protocol flags, using <code>|</code> (bit-wise or).</p>
<dl class="section see"><dt>See also</dt><dd><code><a class="el" href="group__group__ssl.html#ga0d4dc7f02c689dd69a5508848b7b701d" title="soap_ssl_flags flag value to enable SSL v3 but disable TLS, should be used for legacy purposes only ...">SOAP_SSLv3</a></code>, <code><a class="el" href="group__group__ssl.html#gaf273a14b5105e943a0280947d7def8ff" title="soap_ssl_flags flag value to enable both SSL v3 and TLS 1 (TLS 1.0 to max) ">SOAP_SSLv3_TLSv1</a></code>, <code><a class="el" href="group__group__ssl.html#gabdef447c5c16a0d5a35388cb64835f9b" title="soap_ssl_flags flag value to enable TLS v1 (TLS 1.0 and higher) and to disable SSL v3 ...">SOAP_TLSv1</a></code>, <code><a class="el" href="group__group__ssl.html#gac3d8ef23939e8678b69552994f949461" title="soap_ssl_flags flag value to enable TLS 1.0 ">SOAP_TLSv1_0</a></code>, <code><a class="el" href="group__group__ssl.html#gab841bb29efb683c12614424fa7f3c623" title="soap_ssl_flags flag value to enable TLS 1.1 ">SOAP_TLSv1_1</a></code>, <code><a class="el" href="group__group__ssl.html#gaaec41400f54924b9f7eb260f206a18dd" title="soap_ssl_flags flag value to enable TLS 1.2 ">SOAP_TLSv1_2</a></code>, <code><a class="el" href="group__group__ssl.html#gaecb885d03bfd4ba6636028326390192a" title="soap_ssl_flags flag value to enable TLS 1.3 ">SOAP_TLSv1_3</a></code>. </dd></dl>

</div>
</div>
<a class="anchor" id="gac3d8ef23939e8678b69552994f949461"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SOAP_TLSv1_0</td>
        </tr>
      </table>
</div><div class="memdoc">

<p><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag value to enable TLS 1.0 </p>
<p>This flag can be used in combination with other SSL and TLS protocol flags, using <code>|</code> (bit-wise or).</p>
<dl class="section see"><dt>See also</dt><dd><code><a class="el" href="group__group__ssl.html#ga0d4dc7f02c689dd69a5508848b7b701d" title="soap_ssl_flags flag value to enable SSL v3 but disable TLS, should be used for legacy purposes only ...">SOAP_SSLv3</a></code>, <code><a class="el" href="group__group__ssl.html#gaf273a14b5105e943a0280947d7def8ff" title="soap_ssl_flags flag value to enable both SSL v3 and TLS 1 (TLS 1.0 to max) ">SOAP_SSLv3_TLSv1</a></code>, <code><a class="el" href="group__group__ssl.html#gabdef447c5c16a0d5a35388cb64835f9b" title="soap_ssl_flags flag value to enable TLS v1 (TLS 1.0 and higher) and to disable SSL v3 ...">SOAP_TLSv1</a></code>, <code><a class="el" href="group__group__ssl.html#gac3d8ef23939e8678b69552994f949461" title="soap_ssl_flags flag value to enable TLS 1.0 ">SOAP_TLSv1_0</a></code>, <code><a class="el" href="group__group__ssl.html#gab841bb29efb683c12614424fa7f3c623" title="soap_ssl_flags flag value to enable TLS 1.1 ">SOAP_TLSv1_1</a></code>, <code><a class="el" href="group__group__ssl.html#gaaec41400f54924b9f7eb260f206a18dd" title="soap_ssl_flags flag value to enable TLS 1.2 ">SOAP_TLSv1_2</a></code>, <code><a class="el" href="group__group__ssl.html#gaecb885d03bfd4ba6636028326390192a" title="soap_ssl_flags flag value to enable TLS 1.3 ">SOAP_TLSv1_3</a></code>. </dd></dl>

</div>
</div>
<a class="anchor" id="gab841bb29efb683c12614424fa7f3c623"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SOAP_TLSv1_1</td>
        </tr>
      </table>
</div><div class="memdoc">

<p><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag value to enable TLS 1.1 </p>
<p>This flag can be used in combination with other SSL and TLS protocol flags, using <code>|</code> (bit-wise or).</p>
<dl class="section see"><dt>See also</dt><dd><code><a class="el" href="group__group__ssl.html#ga0d4dc7f02c689dd69a5508848b7b701d" title="soap_ssl_flags flag value to enable SSL v3 but disable TLS, should be used for legacy purposes only ...">SOAP_SSLv3</a></code>, <code><a class="el" href="group__group__ssl.html#gaf273a14b5105e943a0280947d7def8ff" title="soap_ssl_flags flag value to enable both SSL v3 and TLS 1 (TLS 1.0 to max) ">SOAP_SSLv3_TLSv1</a></code>, <code><a class="el" href="group__group__ssl.html#gabdef447c5c16a0d5a35388cb64835f9b" title="soap_ssl_flags flag value to enable TLS v1 (TLS 1.0 and higher) and to disable SSL v3 ...">SOAP_TLSv1</a></code>, <code><a class="el" href="group__group__ssl.html#gac3d8ef23939e8678b69552994f949461" title="soap_ssl_flags flag value to enable TLS 1.0 ">SOAP_TLSv1_0</a></code>, <code><a class="el" href="group__group__ssl.html#gab841bb29efb683c12614424fa7f3c623" title="soap_ssl_flags flag value to enable TLS 1.1 ">SOAP_TLSv1_1</a></code>, <code><a class="el" href="group__group__ssl.html#gaaec41400f54924b9f7eb260f206a18dd" title="soap_ssl_flags flag value to enable TLS 1.2 ">SOAP_TLSv1_2</a></code>, <code><a class="el" href="group__group__ssl.html#gaecb885d03bfd4ba6636028326390192a" title="soap_ssl_flags flag value to enable TLS 1.3 ">SOAP_TLSv1_3</a></code>. </dd></dl>

</div>
</div>
<a class="anchor" id="gaaec41400f54924b9f7eb260f206a18dd"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SOAP_TLSv1_2</td>
        </tr>
      </table>
</div><div class="memdoc">

<p><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag value to enable TLS 1.2 </p>
<p>This flag can be used in combination with other SSL and TLS protocol flags, using <code>|</code> (bit-wise or).</p>
<dl class="section see"><dt>See also</dt><dd><code><a class="el" href="group__group__ssl.html#ga0d4dc7f02c689dd69a5508848b7b701d" title="soap_ssl_flags flag value to enable SSL v3 but disable TLS, should be used for legacy purposes only ...">SOAP_SSLv3</a></code>, <code><a class="el" href="group__group__ssl.html#gaf273a14b5105e943a0280947d7def8ff" title="soap_ssl_flags flag value to enable both SSL v3 and TLS 1 (TLS 1.0 to max) ">SOAP_SSLv3_TLSv1</a></code>, <code><a class="el" href="group__group__ssl.html#gabdef447c5c16a0d5a35388cb64835f9b" title="soap_ssl_flags flag value to enable TLS v1 (TLS 1.0 and higher) and to disable SSL v3 ...">SOAP_TLSv1</a></code>, <code><a class="el" href="group__group__ssl.html#gac3d8ef23939e8678b69552994f949461" title="soap_ssl_flags flag value to enable TLS 1.0 ">SOAP_TLSv1_0</a></code>, <code><a class="el" href="group__group__ssl.html#gab841bb29efb683c12614424fa7f3c623" title="soap_ssl_flags flag value to enable TLS 1.1 ">SOAP_TLSv1_1</a></code>, <code><a class="el" href="group__group__ssl.html#gaaec41400f54924b9f7eb260f206a18dd" title="soap_ssl_flags flag value to enable TLS 1.2 ">SOAP_TLSv1_2</a></code>, <code><a class="el" href="group__group__ssl.html#gaecb885d03bfd4ba6636028326390192a" title="soap_ssl_flags flag value to enable TLS 1.3 ">SOAP_TLSv1_3</a></code>. </dd></dl>

</div>
</div>
<a class="anchor" id="gaecb885d03bfd4ba6636028326390192a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SOAP_TLSv1_3</td>
        </tr>
      </table>
</div><div class="memdoc">

<p><code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code> flag value to enable TLS 1.3 </p>
<p>This flag can be used in combination with other SSL and TLS protocol flags, using <code>|</code> (bit-wise or).</p>
<dl class="section see"><dt>See also</dt><dd><code><a class="el" href="group__group__ssl.html#ga0d4dc7f02c689dd69a5508848b7b701d" title="soap_ssl_flags flag value to enable SSL v3 but disable TLS, should be used for legacy purposes only ...">SOAP_SSLv3</a></code>, <code><a class="el" href="group__group__ssl.html#gaf273a14b5105e943a0280947d7def8ff" title="soap_ssl_flags flag value to enable both SSL v3 and TLS 1 (TLS 1.0 to max) ">SOAP_SSLv3_TLSv1</a></code>, <code><a class="el" href="group__group__ssl.html#gabdef447c5c16a0d5a35388cb64835f9b" title="soap_ssl_flags flag value to enable TLS v1 (TLS 1.0 and higher) and to disable SSL v3 ...">SOAP_TLSv1</a></code>, <code><a class="el" href="group__group__ssl.html#gac3d8ef23939e8678b69552994f949461" title="soap_ssl_flags flag value to enable TLS 1.0 ">SOAP_TLSv1_0</a></code>, <code><a class="el" href="group__group__ssl.html#gab841bb29efb683c12614424fa7f3c623" title="soap_ssl_flags flag value to enable TLS 1.1 ">SOAP_TLSv1_1</a></code>, <code><a class="el" href="group__group__ssl.html#gaaec41400f54924b9f7eb260f206a18dd" title="soap_ssl_flags flag value to enable TLS 1.2 ">SOAP_TLSv1_2</a></code>, <code><a class="el" href="group__group__ssl.html#gaecb885d03bfd4ba6636028326390192a" title="soap_ssl_flags flag value to enable TLS 1.3 ">SOAP_TLSv1_3</a></code>. </dd></dl>

</div>
</div>
<h2 class="groupheader">Typedef Documentation</h2>
<a class="anchor" id="ga0cd7f0c3eda00033f2a3b6da331f39ed"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef unsigned short <a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed">soap_ssl_flags</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>SSL/TLS (HTTPS) client and server context flags for <code><a class="el" href="group__group__ssl.html#ga269c7732b1cda9dc79db08fcbf1d5438" title="Initialize the client-side SSL/TLS context. ">soap_ssl_client_context</a></code> and <code><a class="el" href="group__group__ssl.html#ga3492465cdd8aa71fe746199d3842cac7" title="Initialize the server-side SSL/TLS context. ">soap_ssl_server_context</a></code>, respectively, flags can be combined with <code>|</code> (bit-wise or) </p>
<p>The SSL/TLS flags are:</p><ul>
<li><code><a class="el" href="group__group__ssl.html#ga63d10bdcb2b678d9d55cab31e1bdaf3e" title="soap_ssl_flags flag with SOAP_SSL_REQUIRE_SERVER_AUTHENTICATION and SOAP_TLSv1 enabled by default ...">SOAP_SSL_DEFAULT</a></code></li>
<li><code><a class="el" href="group__group__ssl.html#gaa78c27c03ccd2fb47afda6b83a3fd01c" title="soap_ssl_flags flag value to allow self-signed and expired certificates and those without CRL to be u...">SOAP_SSL_ALLOW_EXPIRED_CERTIFICATE</a></code></li>
<li><code><a class="el" href="group__group__ssl.html#ga52614007d0c0359ceaf86588f47661b9" title="soap_ssl_flags flag value to disable authentication of the peer ">SOAP_SSL_NO_AUTHENTICATION</a></code></li>
<li><code><a class="el" href="group__group__ssl.html#ga1bd8c93325f8150c6a2f9c1844e92558" title="soap_ssl_flags flag value to prevent OpenSSL from calling SSL_CTX_set_default_verify_paths ...">SOAP_SSL_NO_DEFAULT_CA_PATH</a></code></li>
<li><code><a class="el" href="group__group__ssl.html#ga4ab5e7f3fbb00fa2669e29e9ca000d12" title="soap_ssl_flags flag for servers to require clients to authenticate to servers during the HTTPS handsh...">SOAP_SSL_REQUIRE_CLIENT_AUTHENTICATION</a></code></li>
<li><code><a class="el" href="group__group__ssl.html#ga8c9f87b34ff34020349d4fe7300c47bc" title="soap_ssl_flags flag for clients to require servers to authenticate to clients during the HTTPS handsh...">SOAP_SSL_REQUIRE_SERVER_AUTHENTICATION</a></code></li>
<li><code><a class="el" href="group__group__ssl.html#gab7153fa5dcada365bce84add0cb60a8e" title="soap_ssl_flags flag value to use RSA instead of DH (automatically set when no DH parameter is specifi...">SOAP_SSL_RSA</a></code></li>
<li><code><a class="el" href="group__group__ssl.html#ga2d7d44f0b65da9941f0272b0f73745f5" title="soap_ssl_flags flag for clients to allow clients to skip common name checks against the host name of ...">SOAP_SSL_SKIP_HOST_CHECK</a></code></li>
<li><code><a class="el" href="group__group__ssl.html#gaf273a14b5105e943a0280947d7def8ff" title="soap_ssl_flags flag value to enable both SSL v3 and TLS 1 (TLS 1.0 to max) ">SOAP_SSLv3_TLSv1</a></code></li>
<li><code><a class="el" href="group__group__ssl.html#ga0d4dc7f02c689dd69a5508848b7b701d" title="soap_ssl_flags flag value to enable SSL v3 but disable TLS, should be used for legacy purposes only ...">SOAP_SSLv3</a></code></li>
<li><code><a class="el" href="group__group__ssl.html#gabdef447c5c16a0d5a35388cb64835f9b" title="soap_ssl_flags flag value to enable TLS v1 (TLS 1.0 and higher) and to disable SSL v3 ...">SOAP_TLSv1</a></code></li>
<li><code><a class="el" href="group__group__ssl.html#gac3d8ef23939e8678b69552994f949461" title="soap_ssl_flags flag value to enable TLS 1.0 ">SOAP_TLSv1_0</a></code></li>
<li><code><a class="el" href="group__group__ssl.html#gab841bb29efb683c12614424fa7f3c623" title="soap_ssl_flags flag value to enable TLS 1.1 ">SOAP_TLSv1_1</a></code></li>
<li><code><a class="el" href="group__group__ssl.html#gaaec41400f54924b9f7eb260f206a18dd" title="soap_ssl_flags flag value to enable TLS 1.2 ">SOAP_TLSv1_2</a></code></li>
<li><code><a class="el" href="group__group__ssl.html#gaecb885d03bfd4ba6636028326390192a" title="soap_ssl_flags flag value to enable TLS 1.3 ">SOAP_TLSv1_3</a></code> </li>
</ul>

</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="ga8b29e4ea1419a4af49823862765f2918"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int CRYPTO_thread_cleanup </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Cleanup function for OpenSSL versions prior to 1.1.1. </p>
<dl class="section see"><dt>See also</dt><dd><code><a class="el" href="group__group__ssl.html#ga570b262ac9d55fc509f1f5999deaa18f" title="Initialize the SSL/TLS library. ">soap_ssl_init</a></code>, <code><a class="el" href="group__group__ssl.html#gaedc51dd2ab95cdff45057639fac70a8f" title="Setup function for OpenSSL versions prior to 1.1.1 to set locks for multi-threaded SSL/TLS applicatio...">CRYPTO_thread_setup</a></code>. </dd></dl>

</div>
</div>
<a class="anchor" id="gaedc51dd2ab95cdff45057639fac70a8f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int CRYPTO_thread_setup </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Setup function for OpenSSL versions prior to 1.1.1 to set locks for multi-threaded SSL/TLS applications. </p>
<p>The <code><a class="el" href="group__group__ssl.html#gaedc51dd2ab95cdff45057639fac70a8f" title="Setup function for OpenSSL versions prior to 1.1.1 to set locks for multi-threaded SSL/TLS applicatio...">CRYPTO_thread_setup()</a></code> and <code>CRYPTO_thread_setup</code> cleanup functions should be defined in the source code of a multi-threaded SSL/TLS application as follows, requiring gsoap/plugin/threads.h:</p>
<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;plugin/threads.h&quot;</span></div><div class="line"></div><div class="line"><span class="keyword">struct </span>CRYPTO_dynlock_value</div><div class="line">{</div><div class="line">  <a class="code" href="group__group__threads.html#ga94ada48918e73511c91e3e0e885fe763">MUTEX_TYPE</a> mutex;</div><div class="line">};</div><div class="line"></div><div class="line"><span class="keyword">static</span> <a class="code" href="group__group__threads.html#ga94ada48918e73511c91e3e0e885fe763">MUTEX_TYPE</a> *mutex_buf = NULL;</div><div class="line"></div><div class="line"><span class="keyword">static</span> <span class="keyword">struct </span>CRYPTO_dynlock_value *dyn_create_function(<span class="keyword">const</span> <span class="keywordtype">char</span> *file, <span class="keywordtype">int</span> line)</div><div class="line">{</div><div class="line">  <span class="keyword">struct </span>CRYPTO_dynlock_value *value;</div><div class="line">  (void)file; (void)line;</div><div class="line">  value = (<span class="keyword">struct </span>CRYPTO_dynlock_value*)OPENSSL_malloc(<span class="keyword">sizeof</span>(<span class="keyword">struct</span> CRYPTO_dynlock_value));</div><div class="line">  <span class="keywordflow">if</span> (value)</div><div class="line">    <a class="code" href="group__group__threads.html#gaebadda8d216cdac28b0d9763be7fe689">MUTEX_SETUP</a>(value-&gt;mutex);</div><div class="line">  <span class="keywordflow">return</span> value;</div><div class="line">}</div><div class="line"></div><div class="line"><span class="keyword">static</span> <span class="keywordtype">void</span> dyn_lock_function(<span class="keywordtype">int</span> mode, <span class="keyword">struct</span> CRYPTO_dynlock_value *l, <span class="keyword">const</span> <span class="keywordtype">char</span> *file, <span class="keywordtype">int</span> line)</div><div class="line">{</div><div class="line">  (void)file; (void)line;</div><div class="line">  <span class="keywordflow">if</span> (mode &amp; CRYPTO_LOCK)</div><div class="line">    <a class="code" href="group__group__threads.html#ga4a9fdd824c39252e5bf292df736e5648">MUTEX_LOCK</a>(l-&gt;mutex);</div><div class="line">  <span class="keywordflow">else</span></div><div class="line">    <a class="code" href="group__group__threads.html#ga706e720f96e7405766dd119e654e03f9">MUTEX_UNLOCK</a>(l-&gt;mutex);</div><div class="line">}</div><div class="line"></div><div class="line"><span class="keyword">static</span> <span class="keywordtype">void</span> dyn_destroy_function(<span class="keyword">struct</span> CRYPTO_dynlock_value *l, <span class="keyword">const</span> <span class="keywordtype">char</span> *file, <span class="keywordtype">int</span> line)</div><div class="line">{</div><div class="line">  (void)file; (void)line;</div><div class="line">  <a class="code" href="group__group__threads.html#ga295d2586aa4d2379248805e622b43742">MUTEX_CLEANUP</a>(l-&gt;mutex);</div><div class="line">  OPENSSL_free(l);</div><div class="line">}</div><div class="line"></div><div class="line"><span class="keyword">static</span> <span class="keywordtype">void</span> locking_function(<span class="keywordtype">int</span> mode, <span class="keywordtype">int</span> n, <span class="keyword">const</span> <span class="keywordtype">char</span> *file, <span class="keywordtype">int</span> line)</div><div class="line">{</div><div class="line">  (void)file; (void)line;</div><div class="line">  <span class="keywordflow">if</span> (mode &amp; CRYPTO_LOCK)</div><div class="line">    <a class="code" href="group__group__threads.html#ga4a9fdd824c39252e5bf292df736e5648">MUTEX_LOCK</a>(mutex_buf[n]);</div><div class="line">  <span class="keywordflow">else</span></div><div class="line">    <a class="code" href="group__group__threads.html#ga706e720f96e7405766dd119e654e03f9">MUTEX_UNLOCK</a>(mutex_buf[n]);</div><div class="line">}</div><div class="line"></div><div class="line"><span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> id_function()</div><div class="line">{</div><div class="line">  <span class="keywordflow">return</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>)<a class="code" href="group__group__threads.html#ga9ab5a77b8cf2b98f7d6c1b48bb421f69">THREAD_ID</a>;</div><div class="line">}</div><div class="line"></div><div class="line"><span class="keywordtype">int</span> <a class="code" href="group__group__ssl.html#gaedc51dd2ab95cdff45057639fac70a8f">CRYPTO_thread_setup</a>()</div><div class="line">{</div><div class="line">  <span class="keywordtype">int</span> i;</div><div class="line">  mutex_buf = (<a class="code" href="group__group__threads.html#ga94ada48918e73511c91e3e0e885fe763">MUTEX_TYPE</a>*)OPENSSL_malloc(CRYPTO_num_locks() * <span class="keyword">sizeof</span>(<a class="code" href="group__group__threads.html#ga94ada48918e73511c91e3e0e885fe763">MUTEX_TYPE</a>));</div><div class="line">  <span class="keywordflow">if</span> (!mutex_buf)</div><div class="line">    <span class="keywordflow">return</span> <a class="code" href="group__group__errors.html#ga9fd637076afcd330401f2cd0a71fe729">SOAP_EOM</a>;</div><div class="line">  <span class="keywordflow">for</span> (i = 0; i &lt; CRYPTO_num_locks(); i++)</div><div class="line">    <a class="code" href="group__group__threads.html#gaebadda8d216cdac28b0d9763be7fe689">MUTEX_SETUP</a>(mutex_buf[i]);</div><div class="line">  CRYPTO_set_id_callback(id_function);</div><div class="line">  CRYPTO_set_locking_callback(locking_function);</div><div class="line">  CRYPTO_set_dynlock_create_callback(dyn_create_function);</div><div class="line">  CRYPTO_set_dynlock_lock_callback(dyn_lock_function);</div><div class="line">  CRYPTO_set_dynlock_destroy_callback(dyn_destroy_function);</div><div class="line">  <span class="keywordflow">return</span> <a class="code" href="group__group__errors.html#ga3b10a68f354f39cbb0fe0d043ad4c7c0">SOAP_OK</a>;</div><div class="line">}</div><div class="line"></div><div class="line"><span class="keywordtype">void</span> <a class="code" href="group__group__ssl.html#ga8b29e4ea1419a4af49823862765f2918">CRYPTO_thread_cleanup</a>()</div><div class="line">{</div><div class="line">  <span class="keywordtype">int</span> i;</div><div class="line">  <span class="keywordflow">if</span> (!mutex_buf)</div><div class="line">    <span class="keywordflow">return</span>;</div><div class="line">  CRYPTO_set_id_callback(NULL);</div><div class="line">  CRYPTO_set_locking_callback(NULL);</div><div class="line">  CRYPTO_set_dynlock_create_callback(NULL);</div><div class="line">  CRYPTO_set_dynlock_lock_callback(NULL);</div><div class="line">  CRYPTO_set_dynlock_destroy_callback(NULL);</div><div class="line">  <span class="keywordflow">for</span> (i = 0; i &lt; CRYPTO_num_locks(); i++)</div><div class="line">    <a class="code" href="group__group__threads.html#ga295d2586aa4d2379248805e622b43742">MUTEX_CLEANUP</a>(mutex_buf[i]);</div><div class="line">  OPENSSL_free(mutex_buf);</div><div class="line">  mutex_buf = NULL;</div><div class="line">}</div></div><!-- fragment --><dl class="section user"><dt>Example:</dt><dd></dd></dl>
<div class="fragment"><div class="line"><span class="keywordtype">int</span> main()</div><div class="line">{</div><div class="line">  <a class="code" href="group__group__ssl.html#ga570b262ac9d55fc509f1f5999deaa18f">soap_ssl_init</a>();</div><div class="line">  <span class="keywordflow">if</span> (<a class="code" href="group__group__ssl.html#gaedc51dd2ab95cdff45057639fac70a8f">CRYPTO_thread_setup</a>())</div><div class="line">    exit(EXIT_FAILURE);</div><div class="line">  ... <span class="comment">// run the application</span></div><div class="line">  <a class="code" href="group__group__ssl.html#ga8b29e4ea1419a4af49823862765f2918">CRYPTO_thread_cleanup</a>();</div><div class="line">}</div></div><!-- fragment --><dl class="section see"><dt>See also</dt><dd><code><a class="el" href="group__group__ssl.html#ga570b262ac9d55fc509f1f5999deaa18f" title="Initialize the SSL/TLS library. ">soap_ssl_init</a></code>, <code><a class="el" href="group__group__ssl.html#ga8b29e4ea1419a4af49823862765f2918" title="Cleanup function for OpenSSL versions prior to 1.1.1. ">CRYPTO_thread_cleanup</a></code>. </dd></dl>

</div>
</div>
<a class="anchor" id="ga990083effa5d8ed931fd75dc2630a2cc"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int soap_ssl_accept </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structsoap.html">soap</a> *&#160;</td>
          <td class="paramname"><em>soap</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Accept SSL/TLS connection. </p>
<p>This function should be called after calling <code><a class="el" href="group__group__io.html#gaec0e1aecc2d5479d8099762feb4713c6" title="Accept a connection with a client. ">soap_accept</a></code> to perform the SSL/TLS handshake with a connected client. This function enforces HTTPS connections that are initialized with <code><a class="el" href="group__group__ssl.html#ga3492465cdd8aa71fe746199d3842cac7" title="Initialize the server-side SSL/TLS context. ">soap_ssl_server_context</a></code>. Returns <code><a class="el" href="group__group__errors.html#ga3b10a68f354f39cbb0fe0d043ad4c7c0" title="The soap_status code for no error (zero) ">SOAP_OK</a></code> or a <code><a class="el" href="group__group__errors.html#gac0eadf8f72bacb5b41b750beaeca0444" title="Status and error codes are int values, a zero value or SOAP_OK (0) means no error, nonzero means error. ">soap_status</a></code> error code.</p>
<dl class="section user"><dt>Examples:</dt><dd></dd></dl>
<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;soapH.h&quot;</span></div><div class="line"></div><div class="line"><span class="keywordtype">int</span> main()</div><div class="line">{</div><div class="line">  <span class="keyword">struct </span>soap *soap = <a class="code" href="group__group__context.html#ga87c20488b2dc680aaa7689b1d024989c">soap_new</a>();</div><div class="line">  <span class="keywordflow">if</span> (<a class="code" href="group__group__ssl.html#ga3492465cdd8aa71fe746199d3842cac7">soap_ssl_server_context</a>(soap, <a class="code" href="group__group__ssl.html#ga63d10bdcb2b678d9d55cab31e1bdaf3e">SOAP_SSL_DEFAULT</a>, <span class="stringliteral">&quot;server.pem&quot;</span>, <span class="stringliteral">&quot;password&quot;</span>, NULL, NULL, NULL, NULL, NULL))</div><div class="line">    exit(EXIT_FAILURE);</div><div class="line">  soap-&gt;<a class="code" href="structsoap.html#a78199a81c504833047224a0ceff6f906">accept_timeout</a> = 3600;                <span class="comment">// exit loop when no request arrives in one hour</span></div><div class="line">  soap-&gt;<a class="code" href="structsoap.html#a711bb3a53de7cc62429e4d3a2e0b5474">send_timeout</a> = soap_recv_timeout = 5; <span class="comment">// 5 seconds max socket stall time (unlimited by default)</span></div><div class="line">  soap-&gt;<a class="code" href="structsoap.html#afcf1d236d052579122f785d7639c43c7">transfer_timeout</a> = 30;                <span class="comment">// 30 seconds max message transfer time (unlimited by default)</span></div><div class="line">  soap-&gt;<a class="code" href="structsoap.html#a345900c2db67e915ceb02bfa21ecbcbd">recv_maxlength</a> = 1048576;             <span class="comment">// limit messages received to 1MB (2GB by default)</span></div><div class="line">  <span class="keywordflow">if</span> (<a class="code" href="group__group__soap.html#gaaae8747f4cdacee575875c3a2488d99c">soap_valid_socket</a>(<a class="code" href="group__group__io.html#ga0a9725a3edbc27b97456190fee47cc18">soap_bind</a>(soap, NULL, PORTNUM, BACKLOG)))</div><div class="line">  {</div><div class="line">    <span class="keywordflow">while</span> (1)</div><div class="line">    {</div><div class="line">      <span class="keywordflow">if</span> (<a class="code" href="group__group__soap.html#gaaae8747f4cdacee575875c3a2488d99c">soap_valid_socket</a>(<a class="code" href="group__group__io.html#gaec0e1aecc2d5479d8099762feb4713c6">soap_accept</a>(soap)))</div><div class="line">      {</div><div class="line">        <span class="keywordflow">if</span> (<a class="code" href="group__group__ssl.html#ga990083effa5d8ed931fd75dc2630a2cc">soap_ssl_accept</a>(soap) || <a class="code" href="group__group__io.html#ga51dba7706a505240bd8935c0b28e419d">soap_serve</a>(soap))</div><div class="line">          <a class="code" href="group__group__fault.html#ga931a4ab6df2553b48a0c270f8a0a88af">soap_print_fault</a>(soap, stderr);</div><div class="line">      }</div><div class="line">      <span class="keywordflow">else</span> <span class="keywordflow">if</span> (soap-&gt;<a class="code" href="structsoap.html#a10b66d6d489690b7d0f591ae2633dd13">errnum</a>) <span class="comment">// accept failed, try again after 1 second</span></div><div class="line">      {</div><div class="line">        <a class="code" href="group__group__fault.html#ga931a4ab6df2553b48a0c270f8a0a88af">soap_print_fault</a>(soap, stderr);</div><div class="line">        sleep(1);</div><div class="line">      }</div><div class="line">      <span class="keywordflow">else</span> <span class="comment">// accept timed out, quit looping</span></div><div class="line">      {</div><div class="line">        <span class="keywordflow">break</span>;</div><div class="line">      }</div><div class="line">      <a class="code" href="group__group__context.html#gaf7d0176161e9def36981e24faa1913d9">soap_destroy</a>(soap);</div><div class="line">      <a class="code" href="group__group__context.html#ga81a009ae1ea825a05e5241e2b7a8ece9">soap_end</a>(soap);</div><div class="line">    }</div><div class="line">  }</div><div class="line">  <a class="code" href="group__group__context.html#ga57108ca4681186e58b5b189c3528f10a">soap_free</a>(soap);</div><div class="line">}</div></div><!-- fragment --><div class="fragment"><div class="line"><span class="preprocessor">#include &quot;soapH.h&quot;</span></div><div class="line"><span class="preprocessor">#include &quot;plugin/threads.h&quot;</span></div><div class="line"></div><div class="line"><span class="keywordtype">int</span> main()</div><div class="line">{</div><div class="line">  <span class="keyword">struct </span>soap *soap = <a class="code" href="group__group__context.html#ga87c20488b2dc680aaa7689b1d024989c">soap_new</a>();</div><div class="line">  soap-&gt;<a class="code" href="structsoap.html#a6b18b017ce2c77ac2b6331469094de59">bind_flags</a> = SO_REUSEADDR;            <span class="comment">// immediate port reuse</span></div><div class="line">  soap-&gt;<a class="code" href="structsoap.html#a78199a81c504833047224a0ceff6f906">accept_timeout</a> = 3600;                <span class="comment">// exit loop when no request arrives in one hour</span></div><div class="line">  soap-&gt;<a class="code" href="structsoap.html#a711bb3a53de7cc62429e4d3a2e0b5474">send_timeout</a> = soap_recv_timeout = 5; <span class="comment">// 5 seconds max socket stall time (unlimited by default)</span></div><div class="line">  soap-&gt;<a class="code" href="structsoap.html#afcf1d236d052579122f785d7639c43c7">transfer_timeout</a> = 30;                <span class="comment">// 30 seconds max message transfer time (unlimited by default)</span></div><div class="line">  soap-&gt;<a class="code" href="structsoap.html#a345900c2db67e915ceb02bfa21ecbcbd">recv_maxlength</a> = 1048576;             <span class="comment">// limit messages received to 1MB (2GB by default)</span></div><div class="line">  <span class="keywordflow">if</span> (<a class="code" href="group__group__soap.html#gaaae8747f4cdacee575875c3a2488d99c">soap_valid_socket</a>(<a class="code" href="group__group__io.html#ga0a9725a3edbc27b97456190fee47cc18">soap_bind</a>(soap, NULL, PORTNUM, BACKLOG)))</div><div class="line">  {</div><div class="line">    <span class="keywordflow">while</span> (1)</div><div class="line">    {</div><div class="line">      <span class="keywordflow">if</span> (<a class="code" href="group__group__soap.html#gaaae8747f4cdacee575875c3a2488d99c">soap_valid_socket</a>(<a class="code" href="group__group__io.html#gaec0e1aecc2d5479d8099762feb4713c6">soap_accept</a>(soap)))</div><div class="line">      {</div><div class="line">        <a class="code" href="group__group__threads.html#ga53ca774b0fc84afe282a5419d2d7239a">THREAD_TYPE</a> tid;</div><div class="line">        <span class="keyword">struct </span>soap *tsoap = <a class="code" href="group__group__context.html#gab4c3f8ce80baf0f1fec8c86f0bb5788a">soap_copy</a>(soap);</div><div class="line">        <span class="keywordflow">if</span> (!tsoap)</div><div class="line">          <a class="code" href="group__group__io.html#ga0ca0c64dc76af8617956a62cf117db94">soap_force_closesock</a>(soap);</div><div class="line">        <span class="keywordflow">else</span></div><div class="line">          <span class="keywordflow">while</span> (<a class="code" href="group__group__threads.html#gabee88cce937a2709b4799ed8df36d486">THREAD_CREATE</a>(&amp;tid, (<span class="keywordtype">void</span>*(*)(<span class="keywordtype">void</span>*))&amp;process_request, (<span class="keywordtype">void</span>*)tsoap))</div><div class="line">            sleep(1); <span class="comment">// failed, try again</span></div><div class="line">      }</div><div class="line">      <span class="keywordflow">else</span> <span class="keywordflow">if</span> (soap-&gt;<a class="code" href="structsoap.html#a10b66d6d489690b7d0f591ae2633dd13">errnum</a>) <span class="comment">// accept failed, try again after 1 second</span></div><div class="line">      {</div><div class="line">        <a class="code" href="group__group__fault.html#ga931a4ab6df2553b48a0c270f8a0a88af">soap_print_fault</a>(soap, stderr);</div><div class="line">        sleep(1);</div><div class="line">      }</div><div class="line">      <span class="keywordflow">else</span> <span class="comment">// accept timed out, quit looping</span></div><div class="line">      {</div><div class="line">        <span class="keywordflow">break</span>;</div><div class="line">      }</div><div class="line">      <a class="code" href="group__group__context.html#gaf7d0176161e9def36981e24faa1913d9">soap_destroy</a>(soap);</div><div class="line">      <a class="code" href="group__group__context.html#ga81a009ae1ea825a05e5241e2b7a8ece9">soap_end</a>(soap);</div><div class="line">    }</div><div class="line">  }</div><div class="line">  <a class="code" href="group__group__context.html#ga57108ca4681186e58b5b189c3528f10a">soap_free</a>(soap);</div><div class="line">}</div><div class="line"></div><div class="line"><span class="keywordtype">void</span> *process_request(<span class="keyword">struct</span> soap *soap)</div><div class="line">{</div><div class="line">  <a class="code" href="group__group__threads.html#ga5848fc7adb50b3a15e40955dce7f8f53">THREAD_DETACH</a>(<a class="code" href="group__group__threads.html#ga9ab5a77b8cf2b98f7d6c1b48bb421f69">THREAD_ID</a>);</div><div class="line">  <span class="keywordflow">if</span> (<a class="code" href="group__group__ssl.html#ga990083effa5d8ed931fd75dc2630a2cc">soap_ssl_accept</a>(soap) == <a class="code" href="group__group__errors.html#ga3b10a68f354f39cbb0fe0d043ad4c7c0">SOAP_OK</a>)</div><div class="line">    <a class="code" href="group__group__io.html#ga51dba7706a505240bd8935c0b28e419d">soap_serve</a>(soap);</div><div class="line">  <a class="code" href="group__group__context.html#gaf7d0176161e9def36981e24faa1913d9">soap_destroy</a>(soap);</div><div class="line">  <a class="code" href="group__group__context.html#ga81a009ae1ea825a05e5241e2b7a8ece9">soap_end</a>(soap);</div><div class="line">  <a class="code" href="group__group__context.html#ga57108ca4681186e58b5b189c3528f10a">soap_free</a>(soap);</div><div class="line">  <span class="keywordflow">return</span> NULL;</div><div class="line">}</div></div><!-- fragment --><dl class="section note"><dt>Note</dt><dd>Requires compilation with <code><a class="el" href="group__group__with.html#gae5fa06f0e13edb611016c85364b0d0f0" title="When this macro is defined at compile time (undefined by default), enables linkage with OpenSSL for H...">WITH_OPENSSL</a></code> or <code><a class="el" href="group__group__with.html#gaba33a0ba79add64c641997a7e5070f27" title="When this macro is defined at compile time (undefined by default), enables linking the GNUTLS library...">WITH_GNUTLS</a></code> and SSL server context initialization with <code><a class="el" href="group__group__ssl.html#ga3492465cdd8aa71fe746199d3842cac7" title="Initialize the server-side SSL/TLS context. ">soap_ssl_server_context</a></code>.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><code><a class="el" href="group__group__with.html#gae5fa06f0e13edb611016c85364b0d0f0" title="When this macro is defined at compile time (undefined by default), enables linkage with OpenSSL for H...">WITH_OPENSSL</a></code>, <code><a class="el" href="group__group__with.html#gaba33a0ba79add64c641997a7e5070f27" title="When this macro is defined at compile time (undefined by default), enables linking the GNUTLS library...">WITH_GNUTLS</a></code>, <code><a class="el" href="group__group__ssl.html#ga3492465cdd8aa71fe746199d3842cac7" title="Initialize the server-side SSL/TLS context. ">soap_ssl_server_context</a></code>, <code><a class="el" href="group__group__ssl.html#gae4052d1c701d1756c3e1b86c740881d5" title="Enable SSL/TLS CRLs. ">soap_ssl_crl</a></code>, <code><a class="el" href="group__group__io.html#ga0a9725a3edbc27b97456190fee47cc18" title="Bind and listen to a port. ">soap_bind</a></code>, <code><a class="el" href="group__group__io.html#gaec0e1aecc2d5479d8099762feb4713c6" title="Accept a connection with a client. ">soap_accept</a></code>.</dd></dl>
<dl class="section return"><dt>Returns</dt><dd><code><a class="el" href="group__group__errors.html#ga3b10a68f354f39cbb0fe0d043ad4c7c0" title="The soap_status code for no error (zero) ">SOAP_OK</a></code> or a <code><a class="el" href="group__group__errors.html#gac0eadf8f72bacb5b41b750beaeca0444" title="Status and error codes are int values, a zero value or SOAP_OK (0) means no error, nonzero means error. ">soap_status</a></code> error code </dd></dl>

</div>
</div>
<a class="anchor" id="ga269c7732b1cda9dc79db08fcbf1d5438"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int soap_ssl_client_context </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structsoap.html">soap</a> *&#160;</td>
          <td class="paramname"><em>soap</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed">soap_ssl_flags</a>&#160;</td>
          <td class="paramname"><em>flags</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>keyfile</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>password</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>cafile</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>capath</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>randfile</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Initialize the client-side SSL/TLS context. </p>
<p>This function initializes the client-side SSL/TLS context of the OpenSSL or GNUTLS library. The <code>flags</code> parameter initializes the context with a combination of <code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code>. The <code>keyfile</code> parameter when non-NULL is the server's private key PEM file, typically concatenated with its certificate in the PEM file. The <code>password</code> parameter when non-NULL is used to unlock the password-protected private key in the key file. The <code>cafile</code> parameter when non-NULL is used to authenticate clients when the <code><a class="el" href="group__group__ssl.html#ga4ab5e7f3fbb00fa2669e29e9ca000d12" title="soap_ssl_flags flag for servers to require clients to authenticate to servers during the HTTPS handsh...">SOAP_SSL_REQUIRE_CLIENT_AUTHENTICATION</a></code> flag is used and contains the client or CA certificate(s). Alternatively, a directory name <code>capath</code> can be specified to point to a directory with the certificate(s). The <code>randfile</code> parameter when non-NULL can be used to seed the PRNG using the specified file with random data. Returns <code><a class="el" href="group__group__errors.html#ga3b10a68f354f39cbb0fe0d043ad4c7c0" title="The soap_status code for no error (zero) ">SOAP_OK</a></code> or a <code><a class="el" href="group__group__errors.html#gac0eadf8f72bacb5b41b750beaeca0444" title="Status and error codes are int values, a zero value or SOAP_OK (0) means no error, nonzero means error. ">soap_status</a></code> error code.</p>
<p>All strings passed to this function must be persistent in memory until the SSL/TLS context is implicitly deleted when the <code><a class="el" href="structsoap.html" title="Context with the engine state. ">soap</a></code> context is deleted.</p>
<p>After <code><a class="el" href="group__group__ssl.html#ga269c7732b1cda9dc79db08fcbf1d5438" title="Initialize the client-side SSL/TLS context. ">soap_ssl_client_context</a></code> initialization you can select a specific cipher list using OpenSSL function <code>SSL_CTX_set_cipher_list(soap-&gt;ctx, "...")</code>. When authentication requires the use of CRLs, you can use <code><a class="el" href="group__group__ssl.html#gae4052d1c701d1756c3e1b86c740881d5" title="Enable SSL/TLS CRLs. ">soap_ssl_crl</a></code> to specify a CRL file and to use any CRLs provided with SSL/TLS handshakes.</p>
<p>All OpenSSL versions prior to 1.1.0 require mutex locks to be explicitly set up in your code for multi-threaded applications by calling <code><a class="el" href="group__group__ssl.html#gaedc51dd2ab95cdff45057639fac70a8f" title="Setup function for OpenSSL versions prior to 1.1.1 to set locks for multi-threaded SSL/TLS applicatio...">CRYPTO_thread_setup()</a></code> and <code><a class="el" href="group__group__ssl.html#ga8b29e4ea1419a4af49823862765f2918" title="Cleanup function for OpenSSL versions prior to 1.1.1. ">CRYPTO_thread_cleanup()</a></code>.</p>
<dl class="section user"><dt>Examples:</dt><dd></dd></dl>
<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;soapH.h&quot;</span></div><div class="line"></div><div class="line"><span class="keyword">struct </span>soap *soap = <a class="code" href="group__group__context.html#ga87c20488b2dc680aaa7689b1d024989c">soap_new</a>();</div><div class="line"><span class="keywordflow">if</span> (<a class="code" href="group__group__ssl.html#ga269c7732b1cda9dc79db08fcbf1d5438">soap_ssl_client_context</a>(soap,</div><div class="line">      <a class="code" href="group__group__ssl.html#ga52614007d0c0359ceaf86588f47661b9">SOAP_SSL_NO_AUTHENTICATION</a>, <span class="comment">// do not authenticate the server</span></div><div class="line">      NULL,</div><div class="line">      NULL,</div><div class="line">      NULL,</div><div class="line">      NULL,</div><div class="line">      NULL</div><div class="line">      ))</div><div class="line">{</div><div class="line">  <a class="code" href="group__group__fault.html#ga931a4ab6df2553b48a0c270f8a0a88af">soap_print_fault</a>(soap, stderr);</div><div class="line">  exit(EXIT_FAILURE);</div><div class="line">}</div></div><!-- fragment --><div class="fragment"><div class="line"><span class="preprocessor">#include &quot;soapH.h&quot;</span></div><div class="line"></div><div class="line"><span class="keyword">struct </span>soap *soap = <a class="code" href="group__group__context.html#ga87c20488b2dc680aaa7689b1d024989c">soap_new</a>();</div><div class="line"><span class="keywordflow">if</span> (<a class="code" href="group__group__ssl.html#ga269c7732b1cda9dc79db08fcbf1d5438">soap_ssl_client_context</a>(soap,</div><div class="line">      <a class="code" href="group__group__ssl.html#ga63d10bdcb2b678d9d55cab31e1bdaf3e">SOAP_SSL_DEFAULT</a>, <span class="comment">// authenticate, use TLSv1.0 to 1.3</span></div><div class="line">      NULL,</div><div class="line">      NULL,</div><div class="line">      <span class="stringliteral">&quot;cacerts.pem&quot;</span>,    <span class="comment">// certificates to authenticate servers</span></div><div class="line">      NULL,</div><div class="line">      NULL</div><div class="line">      ))</div><div class="line">{</div><div class="line">  <a class="code" href="group__group__fault.html#ga931a4ab6df2553b48a0c270f8a0a88af">soap_print_fault</a>(soap, stderr);</div><div class="line">  exit(EXIT_FAILURE);</div><div class="line">}</div></div><!-- fragment --><div class="fragment"><div class="line"><span class="preprocessor">#include &quot;soapH.h&quot;</span></div><div class="line"></div><div class="line"><span class="keyword">struct </span>soap *soap = <a class="code" href="group__group__context.html#ga87c20488b2dc680aaa7689b1d024989c">soap_new</a>();</div><div class="line"><span class="keywordflow">if</span> (<a class="code" href="group__group__ssl.html#ga269c7732b1cda9dc79db08fcbf1d5438">soap_ssl_client_context</a>(soap,</div><div class="line">      <a class="code" href="group__group__ssl.html#gaf273a14b5105e943a0280947d7def8ff">SOAP_SSLv3_TLSv1</a> |                  <span class="comment">// authenticate, use SSLv3, TLSv1.0 to 1.3</span></div><div class="line">      <a class="code" href="group__group__ssl.html#ga2d7d44f0b65da9941f0272b0f73745f5">SOAP_SSL_SKIP_HOST_CHECK</a> |          <span class="comment">// but skip host name checking</span></div><div class="line">      <a class="code" href="group__group__ssl.html#gaa78c27c03ccd2fb47afda6b83a3fd01c">SOAP_SSL_ALLOW_EXPIRED_CERTIFICATE</a>, <span class="comment">// and allow expired certificates</span></div><div class="line">      NULL,</div><div class="line">      NULL,</div><div class="line">      <span class="stringliteral">&quot;cacerts.pem&quot;</span>,                      <span class="comment">// certificates to authenticate servers</span></div><div class="line">      NULL,</div><div class="line">      NULL</div><div class="line">      ))</div><div class="line">{</div><div class="line">  <a class="code" href="group__group__fault.html#ga931a4ab6df2553b48a0c270f8a0a88af">soap_print_fault</a>(soap, stderr);</div><div class="line">  exit(EXIT_FAILURE);</div><div class="line">}</div></div><!-- fragment --><div class="fragment"><div class="line"><span class="preprocessor">#include &quot;soapH.h&quot;</span></div><div class="line"></div><div class="line"><span class="keyword">struct </span>soap *soap = <a class="code" href="group__group__context.html#ga87c20488b2dc680aaa7689b1d024989c">soap_new</a>();</div><div class="line"><span class="keywordflow">if</span> (<a class="code" href="group__group__ssl.html#ga269c7732b1cda9dc79db08fcbf1d5438">soap_ssl_client_context</a>(soap,</div><div class="line">      <a class="code" href="group__group__ssl.html#gab841bb29efb683c12614424fa7f3c623">SOAP_TLSv1_1</a> | <a class="code" href="group__group__ssl.html#gaaec41400f54924b9f7eb260f206a18dd">SOAP_TLSv1_2</a>, <span class="comment">// authenticate, use TLSv1.1 or 1.2</span></div><div class="line">      <span class="stringliteral">&quot;client.pem&quot;</span>,                <span class="comment">// private key and certificate (allowing server to authenticate the client)</span></div><div class="line">      <span class="stringliteral">&quot;password&quot;</span>,                  <span class="comment">// password to read client.pem</span></div><div class="line">      <span class="stringliteral">&quot;cacerts.pem&quot;</span>,               <span class="comment">// certificates to authenticate servers</span></div><div class="line">      NULL,</div><div class="line">      NULL</div><div class="line">      ))</div><div class="line">{</div><div class="line">  <a class="code" href="group__group__fault.html#ga931a4ab6df2553b48a0c270f8a0a88af">soap_print_fault</a>(soap, stderr);</div><div class="line">  exit(EXIT_FAILURE);</div><div class="line">}</div></div><!-- fragment --><div class="fragment"><div class="line"><span class="preprocessor">#include &quot;soapH.h&quot;</span></div><div class="line"></div><div class="line"><span class="comment">// define a verification callback that allows self-signed certificates</span></div><div class="line"><span class="keywordtype">int</span> ssl_verify_callback_allow_self_signed_cert(<span class="keywordtype">int</span> ok, X509_STORE_CTX *store)</div><div class="line">{</div><div class="line">  <span class="keywordflow">if</span> (!ok &amp;&amp; X509_STORE_CTX_get_error(store) == X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN)</div><div class="line">  {</div><div class="line">    X509_STORE_CTX_set_error(store, X509_V_OK);</div><div class="line">    ok = 1;</div><div class="line">  }</div><div class="line">  <span class="keywordflow">return</span> ok;</div><div class="line">}</div><div class="line"></div><div class="line"><span class="keyword">struct </span>soap *soap = <a class="code" href="group__group__context.html#ga87c20488b2dc680aaa7689b1d024989c">soap_new</a>();</div><div class="line">soap-&gt;<a class="code" href="group__group__callbacks.html#ga49fee9ca4a78f9a681afbdfbc0194bf0">fsslverify</a> = ssl_verify_callback_allow_self_signed_cert;</div><div class="line"><span class="keywordflow">if</span> (<a class="code" href="group__group__ssl.html#ga269c7732b1cda9dc79db08fcbf1d5438">soap_ssl_client_context</a>(soap,</div><div class="line">      <a class="code" href="group__group__ssl.html#ga63d10bdcb2b678d9d55cab31e1bdaf3e">SOAP_SSL_DEFAULT</a>, <span class="comment">// authenticate, use TLSv1.0 to 1.3</span></div><div class="line">      <span class="stringliteral">&quot;client.pem&quot;</span>,     <span class="comment">// private key and certificate (allowing server to authenticate the client)</span></div><div class="line">      <span class="stringliteral">&quot;password&quot;</span>,       <span class="comment">// password to read client.pem</span></div><div class="line">      <span class="stringliteral">&quot;cacerts.pem&quot;</span>,    <span class="comment">// certificates to authenticate servers</span></div><div class="line">      NULL,</div><div class="line">      NULL</div><div class="line">      ))</div><div class="line">{</div><div class="line">  <a class="code" href="group__group__fault.html#ga931a4ab6df2553b48a0c270f8a0a88af">soap_print_fault</a>(soap, stderr);</div><div class="line">  exit(EXIT_FAILURE);</div><div class="line">}</div></div><!-- fragment --><dl class="section note"><dt>Note</dt><dd>Requires compilation with <code><a class="el" href="group__group__with.html#gae5fa06f0e13edb611016c85364b0d0f0" title="When this macro is defined at compile time (undefined by default), enables linkage with OpenSSL for H...">WITH_OPENSSL</a></code> or <code><a class="el" href="group__group__with.html#gaba33a0ba79add64c641997a7e5070f27" title="When this macro is defined at compile time (undefined by default), enables linking the GNUTLS library...">WITH_GNUTLS</a></code>.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><code><a class="el" href="group__group__soap.html#gab18ff4d6039f1387641508ae7be8a145" title="User-definable length of RSA keys used for https connections (the value is 2048 by default) ...">SOAP_SSL_RSA_BITS</a></code>, <code><a class="el" href="group__group__ssl.html#ga3492465cdd8aa71fe746199d3842cac7" title="Initialize the server-side SSL/TLS context. ">soap_ssl_server_context</a></code>, <code><a class="el" href="group__group__ssl.html#gae4052d1c701d1756c3e1b86c740881d5" title="Enable SSL/TLS CRLs. ">soap_ssl_crl</a></code>, <code><a class="el" href="group__group__callbacks.html#ga49fee9ca4a78f9a681afbdfbc0194bf0" title="Callback to manage the verification of the certificate provided by a peer (typically a server) ...">soap::fsslverify</a></code>.</dd></dl>
<dl class="section return"><dt>Returns</dt><dd><code><a class="el" href="group__group__errors.html#ga3b10a68f354f39cbb0fe0d043ad4c7c0" title="The soap_status code for no error (zero) ">SOAP_OK</a></code> or a <code><a class="el" href="group__group__errors.html#gac0eadf8f72bacb5b41b750beaeca0444" title="Status and error codes are int values, a zero value or SOAP_OK (0) means no error, nonzero means error. ">soap_status</a></code> error code </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">soap</td><td><code><a class="el" href="structsoap.html" title="Context with the engine state. ">soap</a></code> context </td></tr>
    <tr><td class="paramname">flags</td><td>SSL/TLS context initialization flags </td></tr>
    <tr><td class="paramname">keyfile</td><td>private key file in PEM format or NULL </td></tr>
    <tr><td class="paramname">password</td><td>password to unlock the private key or NULL </td></tr>
    <tr><td class="paramname">cafile</td><td>file with certificates in PEM format or NULL </td></tr>
    <tr><td class="paramname">capath</td><td>directory to certificates </td></tr>
    <tr><td class="paramname">randfile</td><td>file to see the PRNG or NULL </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="gae4052d1c701d1756c3e1b86c740881d5"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int soap_ssl_crl </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structsoap.html">soap</a> *&#160;</td>
          <td class="paramname"><em>soap</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>crlfile</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Enable SSL/TLS CRLs. </p>
<p>This function enables SSL/TLS CRL checking during the SSL/TLS handshake. The <code>crlfile</code> when non-NULL specifies a file with CRLs in PEM format. Returns <code><a class="el" href="group__group__errors.html#ga3b10a68f354f39cbb0fe0d043ad4c7c0" title="The soap_status code for no error (zero) ">SOAP_OK</a></code> or a <code><a class="el" href="group__group__errors.html#gac0eadf8f72bacb5b41b750beaeca0444" title="Status and error codes are int values, a zero value or SOAP_OK (0) means no error, nonzero means error. ">soap_status</a></code> error code.</p>
<dl class="section note"><dt>Note</dt><dd>Requires compilation with <code><a class="el" href="group__group__with.html#gae5fa06f0e13edb611016c85364b0d0f0" title="When this macro is defined at compile time (undefined by default), enables linkage with OpenSSL for H...">WITH_OPENSSL</a></code> or <code><a class="el" href="group__group__with.html#gaba33a0ba79add64c641997a7e5070f27" title="When this macro is defined at compile time (undefined by default), enables linking the GNUTLS library...">WITH_GNUTLS</a></code>.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><code><a class="el" href="group__group__ssl.html#ga3492465cdd8aa71fe746199d3842cac7" title="Initialize the server-side SSL/TLS context. ">soap_ssl_server_context</a></code>, <code><a class="el" href="group__group__ssl.html#ga269c7732b1cda9dc79db08fcbf1d5438" title="Initialize the client-side SSL/TLS context. ">soap_ssl_client_context</a></code>, <code><a class="el" href="group__group__ssl.html#gae4052d1c701d1756c3e1b86c740881d5" title="Enable SSL/TLS CRLs. ">soap_ssl_crl</a></code>.</dd></dl>
<dl class="section return"><dt>Returns</dt><dd><code><a class="el" href="group__group__errors.html#ga3b10a68f354f39cbb0fe0d043ad4c7c0" title="The soap_status code for no error (zero) ">SOAP_OK</a></code> or a <code><a class="el" href="group__group__errors.html#gac0eadf8f72bacb5b41b750beaeca0444" title="Status and error codes are int values, a zero value or SOAP_OK (0) means no error, nonzero means error. ">soap_status</a></code> error code </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">soap</td><td><code><a class="el" href="structsoap.html" title="Context with the engine state. ">soap</a></code> context </td></tr>
    <tr><td class="paramname">crlfile</td><td>CRL file in PEM format or NULL </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ga570b262ac9d55fc509f1f5999deaa18f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void soap_ssl_init </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Initialize the SSL/TLS library. </p>
<p>This function initializes the SSL/TLS library's global state and should be called just once per application. This function is called by the engine when the SSL/TLS library is used but not yet initialized. It is strongly recommended to call <code><a class="el" href="group__group__ssl.html#ga570b262ac9d55fc509f1f5999deaa18f" title="Initialize the SSL/TLS library. ">soap_ssl_init</a></code> once in a multi-threaded application before any threads are started. Furthermore, all OpenSSL versions prior to 1.1.0 require mutex locks to be explicitly set up in your code for multi-threaded applications by calling <code><a class="el" href="group__group__ssl.html#gaedc51dd2ab95cdff45057639fac70a8f" title="Setup function for OpenSSL versions prior to 1.1.1 to set locks for multi-threaded SSL/TLS applicatio...">CRYPTO_thread_setup()</a></code> and <code><a class="el" href="group__group__ssl.html#ga8b29e4ea1419a4af49823862765f2918" title="Cleanup function for OpenSSL versions prior to 1.1.1. ">CRYPTO_thread_cleanup()</a></code>.</p>
<dl class="section warning"><dt>Warning</dt><dd>If an application initializes the SSL/TLS library such as OpenSSL by loading algorithms, then <code><a class="el" href="group__group__ssl.html#ga0391e39e900926438969dc2461634574" title="Do not initalized the SSL/TLS library. ">soap_ssl_noinit</a></code> should be used instead before a <code><a class="el" href="structsoap.html" title="Context with the engine state. ">soap</a></code> context is used to ensure that OpenSSL is not initialized twice.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><code><a class="el" href="group__group__ssl.html#ga570b262ac9d55fc509f1f5999deaa18f" title="Initialize the SSL/TLS library. ">soap_ssl_init</a></code>, <code><a class="el" href="group__group__ssl.html#gaedc51dd2ab95cdff45057639fac70a8f" title="Setup function for OpenSSL versions prior to 1.1.1 to set locks for multi-threaded SSL/TLS applicatio...">CRYPTO_thread_setup</a></code>, <code><a class="el" href="group__group__ssl.html#ga8b29e4ea1419a4af49823862765f2918" title="Cleanup function for OpenSSL versions prior to 1.1.1. ">CRYPTO_thread_cleanup</a></code>. </dd></dl>

</div>
</div>
<a class="anchor" id="ga0391e39e900926438969dc2461634574"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void soap_ssl_noinit </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Do not initalized the SSL/TLS library. </p>
<p>This function prevents (re)initialization of the SSL/TLS library's global state and should be called when an application initializes the SSL/TLS library such as OpenSSL by loading algorithms. OpenSSL may misbehave when <code>SSL_library_init</code> and <code>OpenSSL_add_all_algorithms</code> are called more than once, e.g. by the application and again by the gSOAP engine. The latter is avoided by calling <code><a class="el" href="group__group__ssl.html#ga0391e39e900926438969dc2461634574" title="Do not initalized the SSL/TLS library. ">soap_ssl_noinit</a></code> before threads are started and before a <code><a class="el" href="structsoap.html" title="Context with the engine state. ">soap</a></code> context is created. </p>

</div>
</div>
<a class="anchor" id="ga3492465cdd8aa71fe746199d3842cac7"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int soap_ssl_server_context </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structsoap.html">soap</a> *&#160;</td>
          <td class="paramname"><em>soap</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed">soap_ssl_flags</a>&#160;</td>
          <td class="paramname"><em>flags</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>keyfile</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>password</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>cafile</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>capath</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>dhfile</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>randfile</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>sid</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Initialize the server-side SSL/TLS context. </p>
<p>This function initializes the server-side SSL/TLS context of OpenSSL or GNUTLS library. The <code>flags</code> parameter initializes the context with a combination of <code><a class="el" href="group__group__ssl.html#ga0cd7f0c3eda00033f2a3b6da331f39ed" title="SSL/TLS (HTTPS) client and server context flags for soap_ssl_client_context and soap_ssl_server_conte...">soap_ssl_flags</a></code>. The <code>keyfile</code> parameter when non-NULL is the server's private key PEM file, typically concatenated with its certificate in the PEM file. The <code>password</code> parameter when non-NULL is used to unlock the password-protected private key in the key file. The <code>cafile</code> parameter when non-NULL is used to authenticate clients when the <code><a class="el" href="group__group__ssl.html#ga4ab5e7f3fbb00fa2669e29e9ca000d12" title="soap_ssl_flags flag for servers to require clients to authenticate to servers during the HTTPS handsh...">SOAP_SSL_REQUIRE_CLIENT_AUTHENTICATION</a></code> flag is used and contains the client or CA certificate(s). Alternatively, a directory name <code>capath</code> can be specified to point to a directory with the certificate(s). The <code>dhfile</code> parameter when non-NULL is a file with DH parameters to use DH instead of RSA. Alternatively, the <code>dhfile</code> parameter can be a numeric string value greater than 512 to let the engine generate the DH parameters, but beware this can take a while to execute. The <code>randfile</code> parameter when non-NULL can be used to seed the PRNG using the specified file with random data. The <code>sid</code> parameter when non-NULL is used for server-side session caching using a specified unique name per server. Returns <code><a class="el" href="group__group__errors.html#ga3b10a68f354f39cbb0fe0d043ad4c7c0" title="The soap_status code for no error (zero) ">SOAP_OK</a></code> or a <code><a class="el" href="group__group__errors.html#gac0eadf8f72bacb5b41b750beaeca0444" title="Status and error codes are int values, a zero value or SOAP_OK (0) means no error, nonzero means error. ">soap_status</a></code> error code.</p>
<p>All strings passed to this function except <code>sid</code> must be persistent in memory until the SSL/TLS context is implicitly deleted when the <code><a class="el" href="structsoap.html" title="Context with the engine state. ">soap</a></code> context is deleted.</p>
<p>All OpenSSL versions prior to 1.1.0 require mutex locks to be explicitly set up in your code for multi-threaded applications by calling <code><a class="el" href="group__group__ssl.html#gaedc51dd2ab95cdff45057639fac70a8f" title="Setup function for OpenSSL versions prior to 1.1.1 to set locks for multi-threaded SSL/TLS applicatio...">CRYPTO_thread_setup()</a></code> and <code><a class="el" href="group__group__ssl.html#ga8b29e4ea1419a4af49823862765f2918" title="Cleanup function for OpenSSL versions prior to 1.1.1. ">CRYPTO_thread_cleanup()</a></code>.</p>
<p>After <code><a class="el" href="group__group__ssl.html#ga3492465cdd8aa71fe746199d3842cac7" title="Initialize the server-side SSL/TLS context. ">soap_ssl_server_context</a></code> initialization you can select a specific cipher list using OpenSSL function <code>SSL_CTX_set_cipher_list(soap-&gt;ctx, "...")</code>. When client authentication is required with CRLs, you can use <code><a class="el" href="group__group__ssl.html#gae4052d1c701d1756c3e1b86c740881d5" title="Enable SSL/TLS CRLs. ">soap_ssl_crl</a></code> to specify a CRL file and to use any CRLs provided with SSL/TLS handshakes.</p>
<dl class="section user"><dt>Examples:</dt><dd></dd></dl>
<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;soapH.h&quot;</span></div><div class="line"></div><div class="line"><span class="keyword">struct </span>soap *soap = <a class="code" href="group__group__context.html#ga87c20488b2dc680aaa7689b1d024989c">soap_new</a>();</div><div class="line"><span class="keywordflow">if</span> (<a class="code" href="group__group__ssl.html#ga3492465cdd8aa71fe746199d3842cac7">soap_ssl_server_context</a>(soap,</div><div class="line">      <a class="code" href="group__group__ssl.html#ga63d10bdcb2b678d9d55cab31e1bdaf3e">SOAP_SSL_DEFAULT</a>, <span class="comment">// authenticate, use TLSv1.0 to 1.3</span></div><div class="line">      <span class="stringliteral">&quot;server.pem&quot;</span>,     <span class="comment">// private key and certificate</span></div><div class="line">      <span class="stringliteral">&quot;password&quot;</span>,       <span class="comment">// password to read server.pem</span></div><div class="line">      NULL,</div><div class="line">      NULL,</div><div class="line">      NULL,</div><div class="line">      NULL,</div><div class="line">      <span class="stringliteral">&quot;my_unique_server_id123&quot;</span> <span class="comment">// server identification to enable SSL session caching to speed up TLS</span></div><div class="line">      ))</div><div class="line">{</div><div class="line">  <a class="code" href="group__group__fault.html#ga931a4ab6df2553b48a0c270f8a0a88af">soap_print_fault</a>(soap, stderr);</div><div class="line">  exit(EXIT_FAILURE);</div><div class="line">}</div></div><!-- fragment --><div class="fragment"><div class="line"><span class="preprocessor">#include &quot;soapH.h&quot;</span></div><div class="line"></div><div class="line"><span class="keyword">struct </span>soap *soap = <a class="code" href="group__group__context.html#ga87c20488b2dc680aaa7689b1d024989c">soap_new</a>();</div><div class="line"><span class="keywordflow">if</span> (<a class="code" href="group__group__ssl.html#ga3492465cdd8aa71fe746199d3842cac7">soap_ssl_server_context</a>(soap,</div><div class="line">      <a class="code" href="group__group__ssl.html#gab841bb29efb683c12614424fa7f3c623">SOAP_TLSv1_1</a> | <a class="code" href="group__group__ssl.html#gaaec41400f54924b9f7eb260f206a18dd">SOAP_TLSv1_2</a>, <span class="comment">// authenticate, use TLSv1.1 or TLSv1.2 only</span></div><div class="line">      <span class="stringliteral">&quot;server.pem&quot;</span>,                <span class="comment">// private key and certificate</span></div><div class="line">      <span class="stringliteral">&quot;password&quot;</span>,                  <span class="comment">// password to read server.pem</span></div><div class="line">      NULL,</div><div class="line">      NULL,</div><div class="line">      <span class="stringliteral">&quot;dh1024.pem&quot;</span>,                <span class="comment">// use DH with 1024 bits</span></div><div class="line">      NULL,</div><div class="line">      <span class="stringliteral">&quot;my_unique_server_id123&quot;</span>     <span class="comment">// identification to enable SSL session caching to speed up TLS</span></div><div class="line">      ))</div><div class="line">{</div><div class="line">  <a class="code" href="group__group__fault.html#ga931a4ab6df2553b48a0c270f8a0a88af">soap_print_fault</a>(soap, stderr);</div><div class="line">  exit(EXIT_FAILURE);</div><div class="line">}</div></div><!-- fragment --><div class="fragment"><div class="line"><span class="preprocessor">#include &quot;soapH.h&quot;</span></div><div class="line"></div><div class="line"><span class="keyword">struct </span>soap *soap = <a class="code" href="group__group__context.html#ga87c20488b2dc680aaa7689b1d024989c">soap_new</a>();</div><div class="line"><span class="keywordflow">if</span> (<a class="code" href="group__group__ssl.html#ga3492465cdd8aa71fe746199d3842cac7">soap_ssl_server_context</a>(soap,</div><div class="line">      <a class="code" href="group__group__ssl.html#gab841bb29efb683c12614424fa7f3c623">SOAP_TLSv1_1</a> | <a class="code" href="group__group__ssl.html#gaaec41400f54924b9f7eb260f206a18dd">SOAP_TLSv1_2</a>, <span class="comment">// authenticate, use TLSv1.1 or TLSv1.2 only</span></div><div class="line">      <span class="stringliteral">&quot;server.pem&quot;</span>,                <span class="comment">// private key and certificate</span></div><div class="line">      <span class="stringliteral">&quot;password&quot;</span>,                  <span class="comment">// password to read server.pem</span></div><div class="line">      NULL,</div><div class="line">      NULL,</div><div class="line">      <span class="stringliteral">&quot;1024&quot;</span>,                      <span class="comment">// generate DH with 1024 bits (takes a while to execute)</span></div><div class="line">      NULL,</div><div class="line">      <span class="stringliteral">&quot;my_unique_server_id123&quot;</span>     <span class="comment">// identification to enable SSL session caching to speed up TLS</span></div><div class="line">      ))</div><div class="line">{</div><div class="line">  <a class="code" href="group__group__fault.html#ga931a4ab6df2553b48a0c270f8a0a88af">soap_print_fault</a>(soap, stderr);</div><div class="line">  exit(EXIT_FAILURE);</div><div class="line">}</div></div><!-- fragment --><div class="fragment"><div class="line"><span class="preprocessor">#include &quot;soapH.h&quot;</span></div><div class="line"></div><div class="line"><span class="keyword">struct </span>soap *soap = <a class="code" href="group__group__context.html#ga87c20488b2dc680aaa7689b1d024989c">soap_new</a>();</div><div class="line"><span class="keywordflow">if</span> (<a class="code" href="group__group__ssl.html#ga3492465cdd8aa71fe746199d3842cac7">soap_ssl_server_context</a>(soap,</div><div class="line">      <a class="code" href="group__group__ssl.html#ga4ab5e7f3fbb00fa2669e29e9ca000d12">SOAP_SSL_REQUIRE_CLIENT_AUTHENTICATION</a>, <span class="comment">// require clients to authenticate</span></div><div class="line">      <span class="stringliteral">&quot;server.pem&quot;</span>,                           <span class="comment">// private key and certificate</span></div><div class="line">      <span class="stringliteral">&quot;password&quot;</span>,                             <span class="comment">// password to read server.pem</span></div><div class="line">      <span class="stringliteral">&quot;cacert.pem&quot;</span>,                           <span class="comment">// certificate to authenticate clients</span></div><div class="line">      NULL,</div><div class="line">      NULL,</div><div class="line">      NULL,</div><div class="line">      <a class="code" href="group__group__misc.html#ga5fcf3c8f6f4bc6d5e6efd7a92ceaf399">soap_rand_uuid</a>(soap, NULL) <span class="comment">// identification to enable SSL session caching to speed up TLS</span></div><div class="line">      )</div><div class="line"> || <a class="code" href="group__group__ssl.html#gae4052d1c701d1756c3e1b86c740881d5">soap_ssl_crl</a>(soap, <span class="stringliteral">&quot;crl.pem&quot;</span>))            <span class="comment">// specify CRLs</span></div><div class="line">{</div><div class="line">  <a class="code" href="group__group__fault.html#ga931a4ab6df2553b48a0c270f8a0a88af">soap_print_fault</a>(soap, stderr);</div><div class="line">  exit(EXIT_FAILURE);</div><div class="line">}</div><div class="line"><span class="comment">// specify a cipher list</span></div><div class="line">SSL_CTX_set_cipher_list(soap-&gt;<a class="code" href="structsoap.html#a2ba5188ff4e8d734652a55a11842e79c">ctx</a>, <span class="stringliteral">&quot;HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4:!DH&quot;</span>);</div></div><!-- fragment --><dl class="section note"><dt>Note</dt><dd>Requires compilation with <code><a class="el" href="group__group__with.html#gae5fa06f0e13edb611016c85364b0d0f0" title="When this macro is defined at compile time (undefined by default), enables linkage with OpenSSL for H...">WITH_OPENSSL</a></code> or <code><a class="el" href="group__group__with.html#gaba33a0ba79add64c641997a7e5070f27" title="When this macro is defined at compile time (undefined by default), enables linking the GNUTLS library...">WITH_GNUTLS</a></code>.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><code><a class="el" href="group__group__soap.html#gab18ff4d6039f1387641508ae7be8a145" title="User-definable length of RSA keys used for https connections (the value is 2048 by default) ...">SOAP_SSL_RSA_BITS</a></code>, <code><a class="el" href="group__group__ssl.html#ga269c7732b1cda9dc79db08fcbf1d5438" title="Initialize the client-side SSL/TLS context. ">soap_ssl_client_context</a></code>, <code><a class="el" href="group__group__ssl.html#gae4052d1c701d1756c3e1b86c740881d5" title="Enable SSL/TLS CRLs. ">soap_ssl_crl</a></code>.</dd></dl>
<dl class="section return"><dt>Returns</dt><dd><code><a class="el" href="group__group__errors.html#ga3b10a68f354f39cbb0fe0d043ad4c7c0" title="The soap_status code for no error (zero) ">SOAP_OK</a></code> or a <code><a class="el" href="group__group__errors.html#gac0eadf8f72bacb5b41b750beaeca0444" title="Status and error codes are int values, a zero value or SOAP_OK (0) means no error, nonzero means error. ">soap_status</a></code> error code </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">soap</td><td><code><a class="el" href="structsoap.html" title="Context with the engine state. ">soap</a></code> context </td></tr>
    <tr><td class="paramname">flags</td><td>SSL/TLS context initialization flags </td></tr>
    <tr><td class="paramname">keyfile</td><td>private key file in PEM format or NULL </td></tr>
    <tr><td class="paramname">password</td><td>password to unlock the private key or NULL </td></tr>
    <tr><td class="paramname">cafile</td><td>file with certificates in PEM format or NULL </td></tr>
    <tr><td class="paramname">capath</td><td>directory to certificates </td></tr>
    <tr><td class="paramname">dhfile</td><td>file with DH parameters or numeric string value to generate DH parameters or NULL </td></tr>
    <tr><td class="paramname">randfile</td><td>file to see the PRNG or NULL </td></tr>
    <tr><td class="paramname">sid</td><td>a unique server id for session caching or NULL </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<hr class="footer">
<address class="footer">
Copyright (C) 2021, Robert van Engelen, Genivia Inc., All Rights Reserved.
</address>
<address class="footer"><small>
Converted on Tue Apr 20 2021 19:48:13 by <a target="_blank" href="http://www.doxygen.org/index.html">Doxygen</a> 1.8.11</small></address>
<br>
<div style="height: 246px; background: #DBDBDB;">
</body>
</html>
